package main

import (
	"flag"
	"fmt"
	"log"
	"time"
)

var (
	// 第一种方式
	name = flag.String("v", "芮旭乐", "my name is ruixule")
	// 第二种方式
	nameInfo string
)

/**
go run flagDemo.go -v aaaaaa
go run flagDemo.go -n bbbbbb
go run flagDemo.go -v aaaaaa -n bbbbbbb
*/
func main() {
	// 第二种方式
	flag.StringVar(&nameInfo, "n", "kety", "your name")
	flag.Parse()
	//第一种方式的获取
	fmt.Println("name=", *name)
	fmt.Println("ip has value ", nameInfo)

}

func testBreak() {
	/**
	此处遇到的坑就是：
	在for select 搭配的这样使用中 单独使用break 无法跳出for 循环，必须加上退出管关键词才可以退出
	*/
	c := make(chan bool)
	go func() {
		for i := 0; i < 10; i++ {
			time.Sleep(time.Second)
			fmt.Printf("recevie data=%v\n", <-c)
		}
	}()
Loop:
	for {
		select {
		case c <- true:
			fmt.Printf("now=%v\n", time.Now())
		case <-time.After(time.Second * 20):
			fmt.Printf("时间到 time=%v\n", time.Now().Format("2006-01-02 15:04:05"))
			//break 使用break 无法跳出for 循环
			break Loop
		}
	}
	fmt.Printf("end time=%v", time.Now().Format("2006-01-02 15:04:05"))

}

func flagtest2() {
	var name string
	var age int
	flag.StringVar(&name, "name", "ruixule", "plase your name")
	flag.IntVar(&age, "age", 0, "plase your age")
	flag.Parse()
	log.Printf("成功解析,name=%+v,age=%+v", name, age)

}
func flagtest1() {
	//log.Println(os.Args)
	name := flag.String("name", "ruixule", "thsiname")
	flag.Parse()
	log.Println(*name)
}
